package Waiting;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
        import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;

public class Myframe extends JFrame implements KeyListener { //继承JFrame
    //定义一个列表 用于存储所有背景
    private List<BackGround> allbg = new ArrayList<>();
    //用于存储当前的背景
    private BackGround nowbg = new BackGround();
    //用于双缓存
    private Image offScreenImage = null;
    //定义冰人对象
    private bingren bing = new bingren();

    public Myframe(){
        //设置窗口的大小为1412*1088
        this.setSize(1412,1088);

        //设置窗口居中显示
        this.setLocationRelativeTo(null);

        //设置窗口的可见性
        this.setVisible(true);

        //设置点击窗口上的关闭键，结束程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //设置窗口大小不可变
        this.setResizable(false);

        //向窗口对象添加键盘监听器 需要该类实现KeyListenter接口并且重写他的抽象方法
        this.addKeyListener(this);

        //设置窗口名称
        this.setTitle("森林冰火人");

        //初始化图片
        StaticValue.init();
        //初始化冰人对象
        bing = new bingren(10,395);

        //创建全部的场景
        for (int i =0;i<=2;i++){ //一共三个场景
            allbg.add(new BackGround(i,i));// flag=i，如果i==3返回true
        }
        //将第一个场景设置为当前场景
        nowbg = allbg.get(1);
        //绘制图像
        repaint();
    }

    @Override
    public void paint(Graphics g) { //重写paint方法
        if(offScreenImage == null){ //判断变量是否为null，是的话创建图像
            offScreenImage = createImage(1412,1088);//和窗口大小保持一致

        }
        Graphics graphics = offScreenImage.getGraphics();
        graphics.fillRect(0,0,1412,1088); //对图像进行填充

        //绘制背景
        graphics.drawImage(nowbg.getBgImage(),0,0,this); //当前背景图像的绘画 将图像绘制到了缓冲区上
        //将缓冲区的图像绘制到窗口中
        g.drawImage(offScreenImage,0,0,this);

        //绘制障碍物
        //绘制冰人
       // graphics.drawImage(bing.getShow(),bing.getX(),bing.getY(),this);

    }

    public static void main(String[] args) {
        Myframe sui = new Myframe();
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}
